package great.project.jdkproxy;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.context.annotation.EnableAspectJAutoProxy;

@Aspect
// 开启 aop 代理
@EnableAspectJAutoProxy
public class CustomJDKAspect {

    /*
        execution 表达式： 指定触发点 ， [返回类型 方法的地址(..) ] 方法名字后面小括号里写的是参数列表
     */


    @Pointcut("execution(Object great.project.jdkproxy.UserService.register(..))")
    public void aspect(){

    }

    @Around("aspect()")
    public Object around(ProceedingJoinPoint pjp){

        Object result = null;

        final Object[] args = pjp.getArgs();

        final String format = String.format("我是日志：%s 正在进行注册;手机号码是：%s", args[0], args[1]);

        System.out.println(format);


        try {
            result = pjp.proceed();
        } catch (Throwable throwable) {
            throwable.printStackTrace();
        }

        System.out.println("后置打印日志");

        return result;
    }

}
